package com.ruoyi.finance.mapper;

import java.util.ArrayList;
import java.util.List;

import com.ruoyi.finance.domain.WInvoiceGoodsDetail;
import com.ruoyi.finance.domain.WInvoiceInfo;
import com.ruoyi.finance.domain.vo.ProductInformationDTO;

/**
 * 进项发票Mapper接口
 * 
 * @author ruoyi
 * @date 2025-03-06
 */
public interface WInvoiceInfoMapper 
{
    /**
     * 查询进项发票
     * 
     * @param id 进项发票主键
     * @return 进项发票
     */
    public WInvoiceInfo selectWInvoiceInfoById(Long id);

    /**
     * 查询进项发票列表
     * 
     * @param wInvoiceInfo 进项发票
     * @return 进项发票集合
     */
    public List<WInvoiceInfo> selectWInvoiceInfoList(WInvoiceInfo wInvoiceInfo);

    /**
     * 新增进项发票
     * 
     * @param wInvoiceInfo 进项发票
     * @return 结果
     */
    public int insertWInvoiceInfo(WInvoiceInfo wInvoiceInfo);

    /**
     * 修改进项发票
     * 
     * @param wInvoiceInfo 进项发票
     * @return 结果
     */
    public int updateWInvoiceInfo(WInvoiceInfo wInvoiceInfo);

    /**
     * 删除进项发票
     * 
     * @param id 进项发票主键
     * @return 结果
     */
    public int deleteWInvoiceInfoById(Long id);

    /**
     * 批量删除进项发票
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteWInvoiceInfoByIds(Long[] ids);

    /**
     * @Author TianJiaKuan
     * @Description //TODO 根据发票号码查询数量
     * @Date 13:38 2025/3/10
     * @Param [invoiceNumber]
     * @return int
     **/
    public int countByInvoiceNumber(String invoiceNumber);

    /**
     * @Author TianJiaKuan
     * @Description //TODO 根据车架号查询数量
     * @Date 13:38 2025/3/10
     * @Param [vinNumber]
     * @return int
     **/
    public int countByVinNumber(String vinNumber);
    /**
     * @Author TianJiaKuan
     * @Description //TODO 批量删除删除详细表
     * @Date 13:38 2025/3/10
     * @Param [id]
     * @return void
     **/
    public void deleteWInvoiceVoucherDetailsByInvoiceModuleIds(Long[] ids);
    /**
     * @Author TianJiaKuan
     * @Description //TODO 删除详细表
     * @Date 13:38 2025/3/10
     * @Param [id]
     * @return void
     **/
    public void deleteWInvoiceVoucherDetailsByInvoiceModuleId(Long id);

    public List<ProductInformationDTO> selectallList(Long id);

//    public void batchWInvoiceGoodsDetail(ArrayList<WInvoiceGoodsDetail> arrayList);
}
